/*
 * Malla.cpp
 *
 *  Created on: 10/08/2013
 *      Author: jose
 */

#include <Malla.h>

Malla::Malla(){ }

Malla::Malla(int i, int j, double x1, double x2, double y1, double y2){
	v.resize(i,j,false);
	r.resize(i,j,false);
	e.resize(i,j,false);
	d.resize(i,j,false);
	size[0]=i;
	size[1]=j;
	hx=(double)(x2-x1)/(i-1);
	hy=(double)(y2-y1)/(j-1);

//	rango_x[0]=x1;
//	rango_x[1]=x2;
//	rango_y[0]=y1;
//	rango_y[1]=y2;
}

void Malla::resize(int i,int j, double x1, double x2, double y1, double y2){
	v.resize(i,j,false);
	r.resize(i,j,false);
	e.resize(i,j,false);
	d.resize(i,j,false);
	size[0]=i;
	size[1]=j;
	hx=(double)(x2-x1)/(i-1);
	hy=(double)(y2-y1)/(j-1);
//	rango_x[0]=x1;
//	rango_x[1]=x2;
//	rango_y[0]=y1;
//	rango_y[1]=y2;
}


void Malla::fijar_frontera(int i,int j){
	d(i,j)=1;
}

void Malla::fijar_variable(int i,int j){
	d(i,j)=0;
}

double Malla::V(int i, int j){
	return v(i,j);
}

double Malla::R(int i, int j){
	return r(i,j);
}

double Malla::E(int i,int j){
	return e(i,j);
}

bool Malla::D(int i, int j){
	return d(i,j);
}

void Malla::Set_V(int i, int j,double c){
	v(i,j)=c;
}

void Malla::Set_R(int i, int j, double c){
	r(i,j)=c;
}

void Malla::Set_E(int i,int j, double c){
	e(i,j)=c;
}

int Malla::Size_i(){
	return size[0];
}

int Malla::Size_j(){
	return size[1];
}

double Malla::Hx(){
	return hx;
}

double Malla::Hy(){
	return hy;
}

void Malla::SetNivel(int i, int n){
	if(i>=0){
		nivel=i;
		n_mallas=n;
	} else{
		std::cout<<"Metodo Malla::SetNivel : Nivel de malla incorrecto"<<std::endl;
		exit(1);

	}
}

int Malla::Nivel(){
	return nivel;
}

int Malla::N_mallas(){
	return n_mallas;
}
